package cn.sdormitory.common.sms;

import com.alibaba.fastjson.JSONException;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

@Slf4j
public class TxSmsTemplate {
    private TxProperties txProperties;

    public TxSmsTemplate(TxProperties txProperties) {
        this.txProperties = txProperties;
    }

    /**
     * 指定正文模板id发送短信
     * @param number 用户的手机号码
     * @param value
     * @param flag 根据参数使用模板，0：通知模板 1：验证码模板
     * @return OK 成功  null 失败
     */
    public String sendMesModel(String number,String[] value,Integer flag) {
        try {
            // 接收生成的验证码，设置5分钟内填写
            String[] params = value;
            int templateId;

            // 构建短信发送器
            SmsSingleSender ssender = new SmsSingleSender(txProperties.getAppId(), txProperties.getAppKey());

//            if(flag == 0){
            templateId = txProperties.getTemplateId()[flag];
//            }else if(flag == 1){
//                templateId = txProperties.getTemplateId()[1];
//            }else if(flag == 2){
//                templateId = txProperties.getTemplateId()[1];
//            }

            SmsSingleSenderResult result = ssender.sendWithParam("86", number,
                    templateId, params, txProperties.getSignName(), "", ""); // 签名参数未提供或者为空时，会使用默认签名发送短信

            return result.errMsg; //OK
        } catch (HTTPException e) {
            // HTTP响应码错误
            log.info("短信发送失败,HTTP响应码错误!");
            // e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            log.info("短信发送失败,json解析错误!");
            //e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            log.info("短信发送失败,网络IO错误!");
            // e.printStackTrace();
        }
        return null;
    }

    /**
     * 发送短信验证码
     */
//    public String sendVerifyCode(String number,String[] value) {
//        try {
//            // 接收生成的验证码，设置5分钟内填写
//            String[] params = value;
//
//            // 构建短信发送器
//            SmsSingleSender ssender = new SmsSingleSender(txProperties.getAppId(), txProperties.getAppKey());
//            int[] templateId = txProperties.getTemplateId();
//            System.out.println("111");
//            SmsSingleSenderResult result = ssender.sendWithParam("86", number,
//                    1545771, params, txProperties.getSignName(), "", ""); // 签名参数未提供或者为空时，会使用默认签名发送短信
//            return result.errMsg; //OK
//        } catch (HTTPException e) {
//            // HTTP响应码错误
//            log.info("短信发送失败,HTTP响应码错误!");
//            // e.printStackTrace();
//        } catch (JSONException e) {
//            // json解析错误
//            log.info("短信发送失败,json解析错误!");
//            //e.printStackTrace();
//        } catch (IOException e) {
//            // 网络IO错误
//            log.info("短信发送失败,网络IO错误!");
//            // e.printStackTrace();
//        }
//        return null;
//    }
}
